package com.yx.shop.utils;

import java.io.File;
import java.util.Map;
import java.util.UUID;

/**
 * @Classname Files
 * @Description TODO:文件命名,文件存储路径
 * @Date 2021/04/22 10:23
 * @Created by yx
 */
public class FileUtil {
    /**
     * @Author:yx
     * @return java.lang.String
     * @Date 2021/04/22 15:16
     * @param fileName 原文件名
     * @Description:获取uuid文件名
     **/
    public static String newFileName(String fileName){
        return UUID.randomUUID().toString().replaceAll("-","")+"_"+fileName;
    }

    /**
     * @Author:yx
     * @return java.lang.String
     * @Date 2021/04/22 15:17
     * @param fileName 原文件名
     * @param savePath 存储路径一级目录
     * @Description:
     **/
    public static String newFilePath(String fileName,String savePath){
        int hashCode = fileName.hashCode();
        //获取二级目录
        int path1 = hashCode & 15;
        //获取三级目录
        int path2 = (hashCode>>4)&15;
        //文件完整存储路径
        String path = savePath+File.separator+path1+File.separator+path2;
        File file = new File(path);
        if (!file.exists()){
            file.mkdirs();
        }
        return path;
    }

    public static String getNewFileRelativePath(String fileName){
        int hashCode = fileName.hashCode();
        //获取二级目录
        int path1 = hashCode & 15;
        //获取三级目录
        int path2 = (hashCode>>4)&15;
        //文件相对路径路径---->/WEB-INF/upload
        String path = path1+File.separator+path2;
        return path;
    }


    /**
     * @Author:yx
     * @return void
     * @Date 2021/04/22 15:25
     * @param file 文件夹 一级目录
     * @param fileList 文件列表集合
     * @Description:获取文件列表
     **/
    public static void getFileList(File file, Map<String,String> fileList){
        File[] files = file.listFiles();
        if (files!=null){
            for (File f : files) {
                if (f.isDirectory()){
                    getFileList(f,fileList);
                }else {
                    String UUIDName = f.getName();
                    //第一个下划线后面的字符串为文件原名称--->排除原文件名含_的情况
                    int index = UUIDName.indexOf("_");
                    String realName = UUIDName.substring(index+1);
                    fileList.put(UUIDName,realName);
                }
            }
        }
    }
}
